/**
 * 湖南江河机电自动化设备股份有限公司 版权所有
 * Copyright @2016-2020 All Rights Reserved
 */
package com.hnjme.cnec.mdm.service;

import com.hnjme.cnec.mdm.model.Organization;
import com.hnjme.cnec.mdm.model.Staff;

import java.util.List;

/**
 * @author outta
 * @Since 1.0 2018/8/29
 */
public interface MasterDataService {
    /**
     * 处理组织机构信息
     *
     * @param data     组织机构信息
     * @param operType 操作类型
     * @return true: 处理成功；false：处理失败
     */
    default boolean processOrganization(Organization data, String operType) {
        return false;
    }

    /**
     * 处理接口上获得的员工信息
     *
     * @param data     员工信息
     * @param operType 操作类型
     * @return true 处理成功；false：处理失败
     */
    default boolean processStaff(Staff data, String operType) {
        return false;
    }

    /**
     * 查询组织机构信息列表
     *
     * @return
     */
    default List<Organization> queryOrganizations() {
        return null;
    }

    /**
     * 查询全部的公司信息列表
     *
     * @param orgType 组织机构类型： 01= 行政组织机构；02=财物组织机构
     * @param updateTime 数据更新时间
     * @param page    当前页数
     * @param limit   每页大小，limit>0采用分页；limit = 0或者为空表示不分页
     * @return
     */
    default List<Organization> queryUnits(String orgType, String updateTime, Integer page, Integer limit) {
        return null;
    }

    /**
     * 查询组织机构的基本信息
     *
     * @param code 机构代码
     * @return 机构的基本信息
     */
    default Organization findOrganization(String code) {
        return null;
    }

    /**
     * 查询机构代码为<code>unitCode</code>的公司的部门列表
     *
     * @param unitCode 公司机构代码
     * @param orgType  机构类型
     * @param updateTime
     * @param page     当前页数
     * @param limit    每页大小
     * @return
     */
    default List<Organization> queryDepartments(String unitCode, String orgType, String updateTime, Integer page, Integer limit) {
        return null;
    }

    /**
     * 查询员工代码为<code>code</code>的员工基本信息
     *
     * @param code 员工代码
     * @return
     */
    default Staff findStaff(String code) {
        return null;
    }

    /**
     * 查询全部的员工信息
     *
     * @return
     */
    default List<Staff> queryStaffs() {
        return queryStaffs(null,null,null,null);
    }

    /**
     * 查询公司的员工列表
     * @param unitCode 公司代码
     * @param page 当前页
     * @param limit 每页大小
     * @return
     */
    default List<Staff> queryStaffs(String unitCode, String queryTime ,Integer page, Integer limit) {
        return queryStaffs(unitCode,null,queryTime,page,limit);
    }

    /**
     * 查询公司部门的员工列表
     * @param unitCode 公司代码
     * @param deptCode 部门代码
     * @param page 当前页数
     * @param limit 每页大小
     * @return
     */
    default List<Staff> queryStaffs(String unitCode, String deptCode, String queryTime ,Integer page, Integer limit){
        return null;
    }

//    /**
//     * 新增一个员工信息
//     *
//     * @param staff 员工
//     * @return true 新增成功；false：新增失败
//     */
//    default boolean addStaff(Staff staff) {
//        return false;
//    }
//
//    /**
//     * 启用/停用一个员工
//     *
//     * @param enabled true 启用/false 停用
//     * @param code    员工代码
//     * @return true 成功；false：失败
//     */
//    default boolean enableStaff(boolean enabled, String code) {
//        return false;
//    }
//
//    /**
//     * 更新一个员工信息
//     *
//     * @param staff 员工
//     * @return true 新增成功；false：新增失败
//     */
//    default boolean updateStaff(Staff staff) {
//        return false;
//    }
}
